package com.wang.web3.contracts;

import java.math.BigInteger;
import java.util.ArrayList;
import java.util.Arrays;
import java.util.Collections;
import java.util.HashMap;
import java.util.List;
import java.util.concurrent.Callable;
import org.web3j.abi.EventEncoder;
import org.web3j.abi.EventValues;
import org.web3j.abi.FunctionEncoder;
import org.web3j.abi.TypeReference;
import org.web3j.abi.datatypes.Address;
import org.web3j.abi.datatypes.Bool;
import org.web3j.abi.datatypes.Event;
import org.web3j.abi.datatypes.Function;
import org.web3j.abi.datatypes.Type;
import org.web3j.abi.datatypes.generated.Uint256;
import org.web3j.crypto.Credentials;
import org.web3j.protocol.Web3j;
import org.web3j.protocol.core.DefaultBlockParameter;
import org.web3j.protocol.core.RemoteCall;
import org.web3j.protocol.core.methods.request.EthFilter;
import org.web3j.protocol.core.methods.response.Log;
import org.web3j.protocol.core.methods.response.TransactionReceipt;
import org.web3j.tuples.generated.Tuple12;
import org.web3j.tx.Contract;
import org.web3j.tx.TransactionManager;
import rx.Observable;
import rx.functions.Func1;

/**
 * <p>Auto generated code.
 * <p><strong>Do not modify!</strong>
 * <p>Please use the <a href="https://docs.web3j.io/command_line.html">web3j command line tools</a>,
 * or the org.web3j.codegen.SolidityFunctionWrapperGenerator in the 
 * <a href="https://github.com/web3j/web3j/tree/master/codegen">codegen module</a> to update.
 *
 * <p>Generated with web3j version 3.2.0.
 */
public class AvatarEquipments extends Contract {
    private static final String BINARY = "0x6060604052341561000f57600080fd5b60405160208061129183398101604052808051906020019091905050336000806101000a81548173ffffffffffffffffffffffffffffffffffffffff021916908373ffffffffffffffffffffffffffffffffffffffff160217905550600073ffffffffffffffffffffffffffffffffffffffff168173ffffffffffffffffffffffffffffffffffffffff16141515156100a757600080fd5b80600160006101000a81548173ffffffffffffffffffffffffffffffffffffffff021916908373ffffffffffffffffffffffffffffffffffffffff16021790555050611199806100f86000396000f30060606040526004361061008e576000357c0100000000000000000000000000000000000000000000000000000000900463ffffffff1680634a119901146100935780634b5e0e3d1461012d57806368fb7c6a146101af5780638da5cb5b146102e35780639ee0c8f214610338578063af2057201461046c578063d9621d65146104eb578063f2fde38b1461053c575b600080fd5b341561009e57600080fd5b61012b60048080359060200190820180359060200190808060200260200160405190810160405280939291908181526020018383602002808284378201915050505050509190803590602001908201803590602001908080602002602001604051908101604052809392919081815260200183836020028082843782019150505050505091905050610575565b005b341561013857600080fd5b610195600480803573ffffffffffffffffffffffffffffffffffffffff1690602001909190803590602001909190803590602001909190803573ffffffffffffffffffffffffffffffffffffffff16906020019091905050610697565b604051808215151515815260200191505060405180910390f35b34156101ba57600080fd5b6101d060048080359060200190919050506108fc565b604051808d73ffffffffffffffffffffffffffffffffffffffff1673ffffffffffffffffffffffffffffffffffffffff1681526020018c81526020018b81526020018a73ffffffffffffffffffffffffffffffffffffffff1673ffffffffffffffffffffffffffffffffffffffff1681526020018981526020018881526020018773ffffffffffffffffffffffffffffffffffffffff1673ffffffffffffffffffffffffffffffffffffffff1681526020018681526020018581526020018473ffffffffffffffffffffffffffffffffffffffff1673ffffffffffffffffffffffffffffffffffffffff1681526020018381526020018281526020019c5050505050505050505050505060405180910390f35b34156102ee57600080fd5b6102f6610a41565b604051808273ffffffffffffffffffffffffffffffffffffffff1673ffffffffffffffffffffffffffffffffffffffff16815260200191505060405180910390f35b341561034357600080fd5b6103596004808035906020019091905050610a66565b604051808d73ffffffffffffffffffffffffffffffffffffffff1673ffffffffffffffffffffffffffffffffffffffff1681526020018c81526020018b81526020018a73ffffffffffffffffffffffffffffffffffffffff1673ffffffffffffffffffffffffffffffffffffffff1681526020018981526020018881526020018773ffffffffffffffffffffffffffffffffffffffff1673ffffffffffffffffffffffffffffffffffffffff1681526020018681526020018581526020018473ffffffffffffffffffffffffffffffffffffffff1673ffffffffffffffffffffffffffffffffffffffff1681526020018381526020018281526020019c5050505050505050505050505060405180910390f35b341561047757600080fd5b6104e9600480803573ffffffffffffffffffffffffffffffffffffffff1690602001909190803590602001909190803590602001909190803573ffffffffffffffffffffffffffffffffffffffff1690602001909190803590602001909190803560ff16906020019091905050610b46565b005b34156104f657600080fd5b610522600480803573ffffffffffffffffffffffffffffffffffffffff16906020019091905050610ff8565b604051808215151515815260200191505060405180910390f35b341561054757600080fd5b610573600480803573ffffffffffffffffffffffffffffffffffffffff16906020019091905050611018565b005b60008060009054906101000a900473ffffffffffffffffffffffffffffffffffffffff1673ffffffffffffffffffffffffffffffffffffffff163373ffffffffffffffffffffffffffffffffffffffff161415156105d257600080fd5b815183511415156105e257600080fd5b600083511115156105f257600080fd5b600090505b825181101561069257818181518110151561060e57fe5b9060200190602002015160036000858481518110151561062a57fe5b9060200190602002015173ffffffffffffffffffffffffffffffffffffffff1673ffffffffffffffffffffffffffffffffffffffff16815260200190815260200160002060006101000a81548160ff02191690831515021790555080806001019150506105f7565b505050565b600080829050600360008473ffffffffffffffffffffffffffffffffffffffff1673ffffffffffffffffffffffffffffffffffffffff16815260200190815260200160002060009054906101000a900460ff1615156106f557600080fd5b6000670de0b6b3a76400008581151561070a57fe5b0614151561071757600080fd5b8573ffffffffffffffffffffffffffffffffffffffff16600160009054906101000a900473ffffffffffffffffffffffffffffffffffffffff1673ffffffffffffffffffffffffffffffffffffffff16636352211e876040518263ffffffff167c010000000000000000000000000000000000000000000000000000000002815260040180828152602001915050602060405180830381600087803b15156107be57600080fd5b5af115156107cb57600080fd5b5050506040518051905073ffffffffffffffffffffffffffffffffffffffff161415156107f757600080fd5b8073ffffffffffffffffffffffffffffffffffffffff166323b872dd8730876040518463ffffffff167c0100000000000000000000000000000000000000000000000000000000028152600401808473ffffffffffffffffffffffffffffffffffffffff1673ffffffffffffffffffffffffffffffffffffffff1681526020018373ffffffffffffffffffffffffffffffffffffffff1673ffffffffffffffffffffffffffffffffffffffff1681526020018281526020019350505050602060405180830381600087803b15156108cd57600080fd5b5af115156108da57600080fd5b5050506040518051905015156108ef57600080fd5b6001915050949350505050565b6000806000806000806000806000806000806000600260008f81526020019081526020016000209050428160020154101515610968578060000160009054906101000a900473ffffffffffffffffffffffffffffffffffffffff169c5080600101549b5080600201549a505b4281600501541015156109ab578060030160009054906101000a900473ffffffffffffffffffffffffffffffffffffffff16995080600401549850806005015497505b4281600801541015156109ee578060060160009054906101000a900473ffffffffffffffffffffffffffffffffffffffff16965080600701549550806008015494505b4281600b0154101515610a31578060090160009054906101000a900473ffffffffffffffffffffffffffffffffffffffff16935080600a0154925080600b015491505b5091939597999b5091939597999b565b6000809054906101000a900473ffffffffffffffffffffffffffffffffffffffff1681565b60026020528060005260406000206000915090508060000160009054906101000a900473ffffffffffffffffffffffffffffffffffffffff16908060010154908060020154908060030160009054906101000a900473ffffffffffffffffffffffffffffffffffffffff16908060040154908060050154908060060160009054906101000a900473ffffffffffffffffffffffffffffffffffffffff16908060070154908060080154908060090160009054906101000a900473ffffffffffffffffffffffffffffffffffffffff169080600a01549080600b015490508c565b600080610b5588888888610697565b1515610b6057600080fd5b600260008881526020019081526020016000209150670de0b6b3a764000086811515610b8857fe5b04905060018360ff161415610c76578473ffffffffffffffffffffffffffffffffffffffff168260000160009054906101000a900473ffffffffffffffffffffffffffffffffffffffff1673ffffffffffffffffffffffffffffffffffffffff16148015610bf95750428260020154115b15610c17578381028260020160008282540192505081905550610c25565b838102420182600201819055505b848260000160006101000a81548173ffffffffffffffffffffffffffffffffffffffff021916908373ffffffffffffffffffffffffffffffffffffffff160217905550858260010181905550610f3f565b60028360ff161415610d61578473ffffffffffffffffffffffffffffffffffffffff168260030160009054906101000a900473ffffffffffffffffffffffffffffffffffffffff1673ffffffffffffffffffffffffffffffffffffffff16148015610ce45750428260050154115b15610d02578381028260050160008282540192505081905550610d10565b838102420182600501819055505b848260030160006101000a81548173ffffffffffffffffffffffffffffffffffffffff021916908373ffffffffffffffffffffffffffffffffffffffff160217905550858260040181905550610f3e565b60038360ff161415610e4c578473ffffffffffffffffffffffffffffffffffffffff168260060160009054906101000a900473ffffffffffffffffffffffffffffffffffffffff1673ffffffffffffffffffffffffffffffffffffffff16148015610dcf5750428260080154115b15610ded578381028260080160008282540192505081905550610dfb565b838102420182600801819055505b848260060160006101000a81548173ffffffffffffffffffffffffffffffffffffffff021916908373ffffffffffffffffffffffffffffffffffffffff160217905550808260070181905550610f3d565b60048360ff161415610f37578473ffffffffffffffffffffffffffffffffffffffff168260090160009054906101000a900473ffffffffffffffffffffffffffffffffffffffff1673ffffffffffffffffffffffffffffffffffffffff16148015610eba57504282600b0154115b15610ed85783810282600b0160008282540192505081905550610ee6565b838102420182600b01819055505b848260090160006101000a81548173ffffffffffffffffffffffffffffffffffffffff021916908373ffffffffffffffffffffffffffffffffffffffff1602179055508582600a0181905550610f3c565b600080fd5b5b5b5b7fb0e4f9e0c2e76594f93e039f043c78ae972c1ce2048580ecd62acc080f65386b8888878988604051808673ffffffffffffffffffffffffffffffffffffffff1673ffffffffffffffffffffffffffffffffffffffff1681526020018581526020018473ffffffffffffffffffffffffffffffffffffffff1673ffffffffffffffffffffffffffffffffffffffff1681526020018381526020018281526020019550505050505060405180910390a15050505050505050565b60036020528060005260406000206000915054906101000a900460ff1681565b6000809054906101000a900473ffffffffffffffffffffffffffffffffffffffff1673ffffffffffffffffffffffffffffffffffffffff163373ffffffffffffffffffffffffffffffffffffffff1614151561107357600080fd5b600073ffffffffffffffffffffffffffffffffffffffff168173ffffffffffffffffffffffffffffffffffffffff16141515156110af57600080fd5b8073ffffffffffffffffffffffffffffffffffffffff166000809054906101000a900473ffffffffffffffffffffffffffffffffffffffff1673ffffffffffffffffffffffffffffffffffffffff167f8be0079c531659141344cd1fd0a4f28419497f9722a3daafe3b4186f6b6457e060405160405180910390a3806000806101000a81548173ffffffffffffffffffffffffffffffffffffffff021916908373ffffffffffffffffffffffffffffffffffffffff160217905550505600a165627a7a72305820db6df7637d4ea5633e5833fc7302069d0e821a242c0eb9ad46ee77815746d0690029";

    protected static final HashMap<String, String> _addresses;

    static {
        _addresses = new HashMap<>();
        _addresses.put("5777", "0xb529f14aa8096f943177c09ca294ad66d2e08b1f");
    }

    protected AvatarEquipments(String contractAddress, Web3j web3j, Credentials credentials, BigInteger gasPrice, BigInteger gasLimit) {
        super(BINARY, contractAddress, web3j, credentials, gasPrice, gasLimit);
    }

    protected AvatarEquipments(String contractAddress, Web3j web3j, TransactionManager transactionManager, BigInteger gasPrice, BigInteger gasLimit) {
        super(BINARY, contractAddress, web3j, transactionManager, gasPrice, gasLimit);
    }

    public List<SetEquipmentEventResponse> getSetEquipmentEvents(TransactionReceipt transactionReceipt) {
        final Event event = new Event("SetEquipment", 
                Arrays.<TypeReference<?>>asList(),
                Arrays.<TypeReference<?>>asList(new TypeReference<Address>() {}, new TypeReference<Uint256>() {}, new TypeReference<Address>() {}, new TypeReference<Uint256>() {}, new TypeReference<Uint256>() {}));
        List<EventValues> valueList = extractEventParameters(event, transactionReceipt);
        ArrayList<SetEquipmentEventResponse> responses = new ArrayList<SetEquipmentEventResponse>(valueList.size());
        for (EventValues eventValues : valueList) {
            SetEquipmentEventResponse typedResponse = new SetEquipmentEventResponse();
            typedResponse.user = (String) eventValues.getNonIndexedValues().get(0).getValue();
            typedResponse.girlId = (BigInteger) eventValues.getNonIndexedValues().get(1).getValue();
            typedResponse.tokenAddress = (String) eventValues.getNonIndexedValues().get(2).getValue();
            typedResponse.amount = (BigInteger) eventValues.getNonIndexedValues().get(3).getValue();
            typedResponse.validationDuration = (BigInteger) eventValues.getNonIndexedValues().get(4).getValue();
            responses.add(typedResponse);
        }
        return responses;
    }

    public Observable<SetEquipmentEventResponse> setEquipmentEventObservable(DefaultBlockParameter startBlock, DefaultBlockParameter endBlock) {
        final Event event = new Event("SetEquipment", 
                Arrays.<TypeReference<?>>asList(),
                Arrays.<TypeReference<?>>asList(new TypeReference<Address>() {}, new TypeReference<Uint256>() {}, new TypeReference<Address>() {}, new TypeReference<Uint256>() {}, new TypeReference<Uint256>() {}));
        EthFilter filter = new EthFilter(startBlock, endBlock, getContractAddress());
        filter.addSingleTopic(EventEncoder.encode(event));
        return web3j.ethLogObservable(filter).map(new Func1<Log, SetEquipmentEventResponse>() {
            @Override
            public SetEquipmentEventResponse call(Log log) {
                EventValues eventValues = extractEventParameters(event, log);
                SetEquipmentEventResponse typedResponse = new SetEquipmentEventResponse();
                typedResponse.user = (String) eventValues.getNonIndexedValues().get(0).getValue();
                typedResponse.girlId = (BigInteger) eventValues.getNonIndexedValues().get(1).getValue();
                typedResponse.tokenAddress = (String) eventValues.getNonIndexedValues().get(2).getValue();
                typedResponse.amount = (BigInteger) eventValues.getNonIndexedValues().get(3).getValue();
                typedResponse.validationDuration = (BigInteger) eventValues.getNonIndexedValues().get(4).getValue();
                return typedResponse;
            }
        });
    }

    public List<OwnershipTransferredEventResponse> getOwnershipTransferredEvents(TransactionReceipt transactionReceipt) {
        final Event event = new Event("OwnershipTransferred", 
                Arrays.<TypeReference<?>>asList(new TypeReference<Address>() {}, new TypeReference<Address>() {}),
                Arrays.<TypeReference<?>>asList());
        List<EventValues> valueList = extractEventParameters(event, transactionReceipt);
        ArrayList<OwnershipTransferredEventResponse> responses = new ArrayList<OwnershipTransferredEventResponse>(valueList.size());
        for (EventValues eventValues : valueList) {
            OwnershipTransferredEventResponse typedResponse = new OwnershipTransferredEventResponse();
            typedResponse.previousOwner = (String) eventValues.getIndexedValues().get(0).getValue();
            typedResponse.newOwner = (String) eventValues.getIndexedValues().get(1).getValue();
            responses.add(typedResponse);
        }
        return responses;
    }

    public Observable<OwnershipTransferredEventResponse> ownershipTransferredEventObservable(DefaultBlockParameter startBlock, DefaultBlockParameter endBlock) {
        final Event event = new Event("OwnershipTransferred", 
                Arrays.<TypeReference<?>>asList(new TypeReference<Address>() {}, new TypeReference<Address>() {}),
                Arrays.<TypeReference<?>>asList());
        EthFilter filter = new EthFilter(startBlock, endBlock, getContractAddress());
        filter.addSingleTopic(EventEncoder.encode(event));
        return web3j.ethLogObservable(filter).map(new Func1<Log, OwnershipTransferredEventResponse>() {
            @Override
            public OwnershipTransferredEventResponse call(Log log) {
                EventValues eventValues = extractEventParameters(event, log);
                OwnershipTransferredEventResponse typedResponse = new OwnershipTransferredEventResponse();
                typedResponse.previousOwner = (String) eventValues.getIndexedValues().get(0).getValue();
                typedResponse.newOwner = (String) eventValues.getIndexedValues().get(1).getValue();
                return typedResponse;
            }
        });
    }

    public RemoteCall<String> owner() {
        Function function = new Function("owner", 
                Arrays.<Type>asList(), 
                Arrays.<TypeReference<?>>asList(new TypeReference<Address>() {}));
        return executeRemoteCallSingleValueReturn(function, String.class);
    }

    public RemoteCall<Tuple12<String, BigInteger, BigInteger, String, BigInteger, BigInteger, String, BigInteger, BigInteger, String, BigInteger, BigInteger>> GirlIndexToEquipment(BigInteger param0) {
        final Function function = new Function("GirlIndexToEquipment", 
                Arrays.<Type>asList(new Uint256(param0)),
                Arrays.<TypeReference<?>>asList(new TypeReference<Address>() {}, new TypeReference<Uint256>() {}, new TypeReference<Uint256>() {}, new TypeReference<Address>() {}, new TypeReference<Uint256>() {}, new TypeReference<Uint256>() {}, new TypeReference<Address>() {}, new TypeReference<Uint256>() {}, new TypeReference<Uint256>() {}, new TypeReference<Address>() {}, new TypeReference<Uint256>() {}, new TypeReference<Uint256>() {}));
        return new RemoteCall<Tuple12<String, BigInteger, BigInteger, String, BigInteger, BigInteger, String, BigInteger, BigInteger, String, BigInteger, BigInteger>>(
                new Callable<Tuple12<String, BigInteger, BigInteger, String, BigInteger, BigInteger, String, BigInteger, BigInteger, String, BigInteger, BigInteger>>() {
                    @Override
                    public Tuple12<String, BigInteger, BigInteger, String, BigInteger, BigInteger, String, BigInteger, BigInteger, String, BigInteger, BigInteger> call() throws Exception {
                        List<Type> results = executeCallMultipleValueReturn(function);;
                        return new Tuple12<String, BigInteger, BigInteger, String, BigInteger, BigInteger, String, BigInteger, BigInteger, String, BigInteger, BigInteger>(
                                (String) results.get(0).getValue(), 
                                (BigInteger) results.get(1).getValue(), 
                                (BigInteger) results.get(2).getValue(), 
                                (String) results.get(3).getValue(), 
                                (BigInteger) results.get(4).getValue(), 
                                (BigInteger) results.get(5).getValue(), 
                                (String) results.get(6).getValue(), 
                                (BigInteger) results.get(7).getValue(), 
                                (BigInteger) results.get(8).getValue(), 
                                (String) results.get(9).getValue(), 
                                (BigInteger) results.get(10).getValue(), 
                                (BigInteger) results.get(11).getValue());
                    }
                });
    }

    public RemoteCall<Boolean> equipmentToStatus(String param0) {
        Function function = new Function("equipmentToStatus", 
                Arrays.<Type>asList(new Address(param0)),
                Arrays.<TypeReference<?>>asList(new TypeReference<Bool>() {}));
        return executeRemoteCallSingleValueReturn(function, Boolean.class);
    }

    public RemoteCall<TransactionReceipt> transferOwnership(String newOwner) {
        Function function = new Function(
                "transferOwnership", 
                Arrays.<Type>asList(new Address(newOwner)),
                Collections.<TypeReference<?>>emptyList());
        return executeRemoteCallTransaction(function);
    }

    public static RemoteCall<AvatarEquipments> deploy(Web3j web3j, Credentials credentials, BigInteger gasPrice, BigInteger gasLimit, String _girlCoreAddress) {
        String encodedConstructor = FunctionEncoder.encodeConstructor(Arrays.<Type>asList(new Address(_girlCoreAddress)));
        return deployRemoteCall(AvatarEquipments.class, web3j, credentials, gasPrice, gasLimit, BINARY, encodedConstructor);
    }

    public static RemoteCall<AvatarEquipments> deploy(Web3j web3j, TransactionManager transactionManager, BigInteger gasPrice, BigInteger gasLimit, String _girlCoreAddress) {
        String encodedConstructor = FunctionEncoder.encodeConstructor(Arrays.<Type>asList(new Address(_girlCoreAddress)));
        return deployRemoteCall(AvatarEquipments.class, web3j, transactionManager, gasPrice, gasLimit, BINARY, encodedConstructor);
    }

    public RemoteCall<TransactionReceipt> managerEquipment(List<String> addressList, List<Boolean> statusList) {
        Function function = new Function(
                "managerEquipment", 
                Arrays.<Type>asList(new org.web3j.abi.datatypes.DynamicArray<Address>(
                        org.web3j.abi.Utils.typeMap(addressList, Address.class)),
                new org.web3j.abi.datatypes.DynamicArray<Bool>(
                        org.web3j.abi.Utils.typeMap(statusList, Bool.class))),
                Collections.<TypeReference<?>>emptyList());
        return executeRemoteCallTransaction(function);
    }

    public RemoteCall<TransactionReceipt> setEquipment(String _sender, BigInteger _girlId, BigInteger _amount, String _equipmentAddress, BigInteger _validationDuration, BigInteger _location) {
        Function function = new Function(
                "setEquipment", 
                Arrays.<Type>asList(new Address(_sender),
                new Uint256(_girlId),
                new Uint256(_amount),
                new Address(_equipmentAddress),
                new Uint256(_validationDuration),
                new org.web3j.abi.datatypes.generated.Uint8(_location)), 
                Collections.<TypeReference<?>>emptyList());
        return executeRemoteCallTransaction(function);
    }

    public RemoteCall<TransactionReceipt> isValid(String _from, BigInteger _GirlId, BigInteger _amount, String _tokenContract) {
        Function function = new Function(
                "isValid", 
                Arrays.<Type>asList(new Address(_from),
                new Uint256(_GirlId),
                new Uint256(_amount),
                new Address(_tokenContract)),
                Collections.<TypeReference<?>>emptyList());
        return executeRemoteCallTransaction(function);
    }

    public RemoteCall<Tuple12<String, BigInteger, BigInteger, String, BigInteger, BigInteger, String, BigInteger, BigInteger, String, BigInteger, BigInteger>> getGirlEquipmentStatus(BigInteger _girlId) {
        final Function function = new Function("getGirlEquipmentStatus", 
                Arrays.<Type>asList(new Uint256(_girlId)),
                Arrays.<TypeReference<?>>asList(new TypeReference<Address>() {}, new TypeReference<Uint256>() {}, new TypeReference<Uint256>() {}, new TypeReference<Address>() {}, new TypeReference<Uint256>() {}, new TypeReference<Uint256>() {}, new TypeReference<Address>() {}, new TypeReference<Uint256>() {}, new TypeReference<Uint256>() {}, new TypeReference<Address>() {}, new TypeReference<Uint256>() {}, new TypeReference<Uint256>() {}));
        return new RemoteCall<Tuple12<String, BigInteger, BigInteger, String, BigInteger, BigInteger, String, BigInteger, BigInteger, String, BigInteger, BigInteger>>(
                new Callable<Tuple12<String, BigInteger, BigInteger, String, BigInteger, BigInteger, String, BigInteger, BigInteger, String, BigInteger, BigInteger>>() {
                    @Override
                    public Tuple12<String, BigInteger, BigInteger, String, BigInteger, BigInteger, String, BigInteger, BigInteger, String, BigInteger, BigInteger> call() throws Exception {
                        List<Type> results = executeCallMultipleValueReturn(function);;
                        return new Tuple12<String, BigInteger, BigInteger, String, BigInteger, BigInteger, String, BigInteger, BigInteger, String, BigInteger, BigInteger>(
                                (String) results.get(0).getValue(), 
                                (BigInteger) results.get(1).getValue(), 
                                (BigInteger) results.get(2).getValue(), 
                                (String) results.get(3).getValue(), 
                                (BigInteger) results.get(4).getValue(), 
                                (BigInteger) results.get(5).getValue(), 
                                (String) results.get(6).getValue(), 
                                (BigInteger) results.get(7).getValue(), 
                                (BigInteger) results.get(8).getValue(), 
                                (String) results.get(9).getValue(), 
                                (BigInteger) results.get(10).getValue(), 
                                (BigInteger) results.get(11).getValue());
                    }
                });
    }

    public static AvatarEquipments load(String contractAddress, Web3j web3j, Credentials credentials, BigInteger gasPrice, BigInteger gasLimit) {
        return new AvatarEquipments(contractAddress, web3j, credentials, gasPrice, gasLimit);
    }

    public static AvatarEquipments load(String contractAddress, Web3j web3j, TransactionManager transactionManager, BigInteger gasPrice, BigInteger gasLimit) {
        return new AvatarEquipments(contractAddress, web3j, transactionManager, gasPrice, gasLimit);
    }

    protected String getStaticDeployedAddress(String networkId) {
        return _addresses.get(networkId);
    }

    public static String getPreviouslyDeployedAddress(String networkId) {
        return _addresses.get(networkId);
    }

    public static class SetEquipmentEventResponse {
        public String user;

        public BigInteger girlId;

        public String tokenAddress;

        public BigInteger amount;

        public BigInteger validationDuration;
    }

    public static class OwnershipTransferredEventResponse {
        public String previousOwner;

        public String newOwner;
    }
}
